import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
 * Write a description of class Mundo here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Mundo extends World
{

   /**Variables de instancia para el mundo*/
   public int n=1,V=9,VR=9,Nivel,Es,V2=9,V2R=9,V3=9,V3R=9,dineroAzul=0,dineroRojo=0;
   regresaMenu menu=new regresaMenu();
   public  GreenfootSound pista=new GreenfootSound("fondo.mp3");
   public  GreenfootSound pistaMenu=new GreenfootSound("virus.mp3");  
   
    /**
     * Constructor for objects of class Mundo.
     * 
     */
   public Mundo()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(700, 400, 1);
        // setBackground("fondo_selva.jpg");
      //GreenfootSound.playLoop("fondo.mp3");
        prepare(4);
    }

    /**
     * Prepare the world for the start of the program. That is: create the initial
     * objects and add them to the world.
     */

    public void prepare(int dato)
    {
        switch (dato)
        {
            case 1:
                    pistaMenu.stop();
                    mundo1();
                    break;
            case 2:
                    mundo2();
                    break;
            case 3:
                    mundo3();
                    break;
            case 4:
                    menu();
                    break;
            case 5:
                    creditosT();
                    break;
            case 6:
                    instrucciones1();
                    break;
            case 7:
                    instrucciones2();
                    break;

            case 9:
                    gameOver();
                    break;
            case 10:
                    pista.stop();
                    winner();
                    break;


        }
    }
    
    /**Instrucciones*/
     public void instrucciones1()
    {
     setBackground("instruccionesT.png");
     siguiente s=new siguiente();
     addObject(s,570,378);
    }
     /**Instrucciones 2*/
     public void instrucciones2()
    {
     setBackground("instruccionesTT.png");
     addObject(menu,570,378);
    }
     /**Creditos*/
    public void creditosT()
    {
     setBackground("creditosT.png");
     addObject(menu,570,378);
    }
     /**Ganaste*/
    public void winner(){
         setBackground("winer.png");
          addObject(menu,570,378);
    }
     /**Menu*/
    public void menu(){
       
        pistaMenu.playLoop();
        pistaMenu.setVolume(30);
        setBackground("menu.png");
        jugar jug=new jugar();
        instrucciones ins=new instrucciones();
        creditos cre=new creditos();
        
        addObject(jug,150,250);
        addObject(cre,350,350);
        addObject(ins,550,250);    
    }
     /**Perdiste*/
    public void gameOver(){
        pista.stop();
        setBackground("gameOver.png");
        addObject(menu,550,380);
    }
    
     /**Nivel 3*/
    public void mundo3(){
        
       setBackground("fondo4.png");
      sonicAzul sonicA = new sonicAzul  ();
      sonicRojo sonicR =  new  sonicRojo();
      Nivel=3;
       /**Cronometro*/
        Cronometro cro= new Cronometro(2);
       Cronometro cr=new Cronometro(3);
       Cronometro c=new Cronometro(4);
       Cronometro c2=new Cronometro (5);
       addObject(cro,(700/2)+85,10);
       addObject(cr,(700/2)+60,10);
       addObject(c,(700/2)+25,10);
       addObject(c2,(700/2),10);
       
       /**No de Monedas*/
       noMonedas mon1=new noMonedas(1);
       noMonedas mon2=new noMonedas(2);
       addObject(mon1,(700/5)-5,10);
       addObject(mon2,(700/3)-15,10);
       
        /***Vidas*/
      vidas vA=new vidas(5);
      vidas vR=new vidas(6);
      addObject(vA, 645,10 );
      addObject(vR, 687,10 );
      
      /***Puertas*/
        puertaAzul puertaazul = new puertaAzul();
        addObject(puertaazul, 19, 47);
        
        Puertas puertas = new Puertas();
        addObject(puertas, 47, 48);
        
        puertaRoja puertaroja = new puertaRoja();
        addObject(puertaroja,74, 48);
      /**Palancas*/

      palancaPiso pP=new palancaPiso(7);
      addObject(pP,20,150);
      palancaPiso pP2=new palancaPiso(8);
      addObject(pP2,460,270);
     
      palancaPiso pP1=new palancaPiso(7);
      addObject(pP1,523, 97);
       palancaRoja palancaroja = new palancaRoja(5);
        addObject(palancaroja, 233, 81);
        
      palancaAzul palancaazul = new palancaAzul(4);
       addObject(palancaazul, 529, 270);
       
        liso liso7 = new liso(6);
        addObject(liso7, 652, 115);
       
        liso liso8 = new liso(6);
        addObject(liso8, 391, 98);
      
        liso liso9 = new liso(6);
        addObject(liso9, 523, 107);
       
        liso liso10 = new liso(6);
        addObject(liso10,264, 91);
        
        liso liso11 = new liso(6);
        addObject(liso11,140, 77);
        
        liso liso12 = new liso(6);
        addObject(liso12, 42, 77);
     
         /**Piso*/
       for(int i=0;i<=6;i++)
        {
            liso l=new liso(6);
            if(i==0){
            addObject(l, 100*i,160); liso l1=new liso(6);  addObject(l1, 100*i,280);}
            else
            if(i!=3&&i!=4)
            addObject(l, 100*i,280);
           
        }
        
        /**Escalera*/
        escalera esc=new escalera(1);
        addObject(esc,25,220);
        
         /** Inserta Monos*/
        addObject(sonicA, 10, 250);
        addObject(sonicR, 110,150 );
    }
    
     /**Nivel 2*/
    public void mundo2(){
       
       setBackground("fondo2.png");
       sonicAzul sonicA = new sonicAzul  ();
       sonicRojo sonicR =  new  sonicRojo();
      Nivel=2;
      dineroAzul=0;dineroRojo=0;
      /**No de monedas*/
      noMonedas mon1=new noMonedas(1);
       noMonedas mon2=new noMonedas(2);
       addObject(mon1,(700/5)-5,10);
       addObject(mon2,(700/3)-15,10);
      
       /**Nubes*/
       for(int i=1;i<=3;i++)
       {
        nubes nub=new nubes(1);
        nubes nub2=new nubes(2);
        if(i!=1)
        addObject(nub, 300*(i-1), 80);
        else
        addObject(nub, 100*i, 150);
        if(i==1)
        addObject(nub, 200*i, 80);
        else
        if(i<3)
        addObject(nub2, 250*i,200 ); 
       }
      /**Puertas*/
       puertaRoja pRoja=new puertaRoja();
       puertaAzul pAzul=new puertaAzul();
       Puertas ptas=new Puertas();
       
       addObject(pRoja,600,60);
       addObject(pAzul,680,60);
       addObject(ptas,650,60);
      /**Palancas*/
      palancaAzul pA=new palancaAzul(3);
      palancaRoja pR=new palancaRoja(3);
      palancaPiso pP=new palancaPiso(2);
       
      addObject(pA,600,385);
      addObject(pR,20,80);
      
      /***Vidas*/
      vidas vA=new vidas(3);
      vidas vR=new vidas(4);
      addObject(vA, 645,10 );
      addObject(vR, 687,10 );
         
      /**Escalera*/
      escalera esc=new escalera(1);
      addObject(esc,500,330);
       /**Piso*/
       for(int i=0;i<=7;i++)
       {
        liso l=new liso(3);
        liso l2=new liso(5);
        liso l3=new liso(5);
         addObject(l, 100*i,392);
         if(i<5&&i!=0)
         addObject(l2, 130*i,250);
         
         addObject(l3, 100*(i),90);
       }
       
       /**Monedas*/
        for(int i=1;i<=11;i++)
        {
            Moneda monn=new Moneda(1);
            //Moneda m=new Moneda(1);
           // addObject(mon,60*i,340);
            addObject(monn,100*(i-1),50);
        }
       
       /**Trampas**/
      for(int i=0;i<=12;i+=3)
      {
       Agua a=new Agua();
       Fuego f=new Fuego();
       addObject(f,50*(i+1),390);
       addObject(a,50*i,390);
      }
      /**Agua*/
      Agua a1=new Agua();
      addObject(a1,200,300);
      Agua a2=new Agua();
      addObject(a2,320,280);
     /**Fuego*/
      Fuego f1=new Fuego();
      addObject(f1,25,120);
      Fuego f2=new Fuego();
      addObject(f2,345,160);
      Fuego f3=new Fuego();
      addObject(f3,550,130);
    
      /**Cronometro*/
        Cronometro cro= new Cronometro(2);
       Cronometro cr=new Cronometro(3);
       Cronometro c=new Cronometro(4);
       Cronometro c2=new Cronometro (5);
       addObject(cro,(700/2)+85,10);
       addObject(cr,(700/2)+60,10);
       addObject(c,(700/2)+25,10);
       addObject(c2,(700/2),10);
      
        
      /** Inserta Monos*/
        addObject(sonicA, 10, 160);
        addObject(sonicR, 110,150 );
    }
    
   /*********Primer Nivel**********/
    public void mundo1(){
        
   pista.playLoop();
     pista.setVolume(50);
     setBackground("fondo1.png");
        sonicAzul sonicA = new sonicAzul  ();
        sonicRojo sonicR =  new  sonicRojo();
        Nivel=1;
        
       /**No Monedas*/
       noMonedas mon1=new noMonedas(1);
       noMonedas mon2=new noMonedas(2);
       addObject(mon1,(700/5)-5,10);
       addObject(mon2,(700/3)-15,10);
       /***Vidas*/
      vidas vA=new vidas(1);
      vidas vR=new vidas(2);
      addObject(vA, 645,10 );
      addObject(vR, 687,10 );
      
       /**Cronometro*/
       Cronometro cro= new Cronometro(2);
       Cronometro cr=new Cronometro(3);
       Cronometro c=new Cronometro(4);
       Cronometro c2=new Cronometro (5);
       addObject(cro,(700/2)+85,10);
       addObject(cr,(700/2)+60,10);
       addObject(c,(700/2)+25,10);
       addObject(c2,(700/2),10);

        /**Puertas*/
        puertaRoja pRoja=new puertaRoja();
        Puertas p=new Puertas();
        puertaAzul pAzul=new puertaAzul();
        addObject(pAzul, 674,50);
        addObject(pRoja, 616,50);
        addObject(p,636,50);

        
        
        /**Palancas*/
        palancaRoja palaRoja=new palancaRoja(2);
        palancaAzul palaAzul=new palancaAzul(2);
        palancaPiso palaPiso=new palancaPiso(2);
        palancaPiso palaPiso2=new palancaPiso(2);
        
        addObject(palaRoja, 450,270);
        addObject(palaAzul, 530,70);
        addObject(palaPiso,685,380);
        addObject(palaPiso2,560,65);
      
        /**Piso*/
       for(int i=0;i<=6;i++)
        {
            liso l=new liso(1);
            addObject(l, 115*i,393);
            liso li=new liso(1);
            if(i<4)
                addObject(li, 80*i,200);
            else
            if(i<7)
                addObject(li, 100*(i+1),280);
          liso lis=new liso(1);
            if(i<4)    
                addObject(lis, 115*i,80);
            if(i>=5)
                addObject(lis, 115*i,80);
        }
       /**Escalera*/
        for(int i=0;i<2;i++)
        {
            escalera esc=new escalera(Nivel);
            addObject(esc,200+(100*i*3) ,330);
        } 
        escalera esc1=new escalera(Nivel);
        addObject(esc1,200,220);

        /**Monedas*/
        for(int i=1;i<=11;i++)
        {
            Moneda mon=new Moneda(1);
            Moneda m=new Moneda(1);
            Moneda m1=new Moneda(1);
            addObject(mon,60*i,340);
            addObject(m,100*(i-1),50);
            if(i%2==1&&i<7)
            addObject(m1,60*i,170);
            else
            if(i%2==1&&i>8)
            addObject(m1,60*i,230);
        }

       for(int i=0;i<7;i++){
        Agua agua = new Agua();
        Fuego fuego = new Fuego();
        Aceite aceite=new Aceite();
        if(i%3==2)
        addObject(fuego, 90*i, 389);
        else
        if(i%3==0&&i<6&&i!=0)
        addObject(fuego, 90*i, 195);
        else
        if(i%3==0)
        addObject(fuego, 100*i, 277);
        
        if(i%3==2&&i<4)
        addObject(agua, 150*i, 389);
        else
        if(i%3==0&&i<6&&i!=0)
        addObject(agua, 150*i, 195);
        else
        if(i%3==0)
        addObject(agua, 150*i, 277);
       
        if(i==0)
        addObject(aceite, 600, 389);
        else
        if(i<3)
         addObject(aceite, 200*i,78);
       }
        
       addObject(sonicA, 50, 277);
        addObject(sonicR, 286, 280);
       
        
    }
     /**Eliminar Objetos*/

    public void eliminaObjetos()
    {
        int num,i=0;
        num=getObjects(null).size(); /**Obtiene numero de objetos en el mundo*/
        Actor eli;
        while(i<num)
        {
            eli= (Actor) getObjects(null).get(0);
            removeObject(eli);
            i++;
        }
    }

}
